The Setup
I had Windows XP as it came installed on a Dell on a 20 gig hd, and an older
15 gig hd that I set out to install Red Hat Beta Null (7.3.94) onto. Using
the beta may not be the best choice, but there were some features on it I was
willing to put up with any quirks to have. Currently, everything is upgraded
to 8.0 though I don't think grub has been updated significantly between those
two releases.
Installation went fine, and as it is said of Linux currently, the challenge
lies not in getting the distribution installed but in fine tuning and customizing the system even after the autodetection and automatic configuration was well and successful.
GRUB: The GRand Unified Bootloader
The Red Hat installer didn't recognize my need to boot two different OS's off two different drive, and so I had to delve into the bootloader options. There were two ways to go:
Boot off the XP drive, and have the Windows bootloader boot each os.
Boot off the Linux drive, and have GRUB or lilo choose the os to boot.
Naturally the second is the most attractive option, and that's what I set about doing.
One note: I initially thought that the master/slave options set on the drive's jumpers would decide which hd to be booted, but the bios overrides this with its own drive priority settings. Initially, by pressing the del key upon startup, I switched between drives to boot by changing their priority in the bios. That constitutes a third solution to the problem which required little fiddling with bootloaders, but is very inelegant.
GRUB is a GNU replacement for lilo, and one key feature is the ability to edit the boot configuration before bootloading has occured. This saved me from having to use a bootdisk more than a few times.
Another note: I read that Windows does not like to be booted off a secondary drive, and that it might be necessary to erase the mbr (master boot record) on the XP drive with the linux bootloader. This seemed too risky and I ruled it out from the start.
Some google searching and reading of the GRUB manual resulted in an /boot/grub/grub.conf like this:
default=0
timeout=10
#fallback=0
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-11)
root (hd0,0)
kernel /vmlinuz-2.4.18-11 ro root=LABEL=/ hdd=ide-scsi
initrd /initrd-2.4.18-11.img
title Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
setup (hd0)
rootnoverify (hd0,0)
root (hd0,0)
makeactive
chainloader +1
The two sets of map commands under the XP portion are supposed to convince
Windows that it is in fact on the primary drive (hd0). It didn't work for me
but one user sent me this:
title Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
root (hd1,0)
makeactive
chainloader +1
With this I get an error message about an 'Invalid or Corrupt'
boot sector. This user was running XP on ntfs rather than fat32, so perhaps that
is the source of discrepancy or there are errors on the fat32 partition.
XP Bootloader
The other option requires copy 512 bytes off the /boot portion of the linux
drive into the C:\ root directory, and instructing windows to boot that as a
second option. Remember that if the drive priority has been switched around
in bios, the grub.conf needs to be tailored to that setting- set up grub.conf
and run grub-install assuming the linux drive to be secondary even it may have
been necessary to set it as primary to get in and do any work at all.
The command was something like:
dd if=/dev/hdb of=bootsect.lnx bs=512 count=1
(it may be /dev/hda depending on the setup) Since I'm running XP on a fat32
filesystem, I could simply copy bootsect.lnx to the 'C:\' drive. With ntfs,
use a floppy or email it to yourself and reboot into XP to put the file in
it's place.
XP's bootloader can be told to attempt to boot linux by putting a line like
C:\BOOTSECT.LNX="Linux"
Under [operating systems] in boot.ini.
Experiments with this resulted in two failure modes upon attempting to boot linux from the XP bootloader:
GRUB would fail to start, printing a GRUB_ to the screen and locking up.
GRUB would get into an infinite loop, printing 'GRUB' to the screen repeatedly: GRUB GRUB GRUB GRUB, which reminded me of Philip K. Dick's Martian Timeslip for some reason.
At least GRUB was getting somewhere though, apparently back to the same piece of code over and over.
The reason I discerned for the two variations was that the first (GRUB_ or
GRUB _) was the result of copying the wrong 512 bytes into C:\, like /dev/hdb rather than /dev/hdb1 (the latter being where /boot is mounted).
Concluding in Failure
So I couldn't get it to work, and as a result I have to switch through the bios settings at startup.
Copyright © 2002-2003 Lucas W
|